Apple has identified the Open Transport functions, structures, and constants that are most commonly used by a large number of applications and by Mac OS system software. Carbon will support this key subset of the current interface.
Carbon, for example, will support the Open Transport endpoint routines for IP protocols. These routines are defined in the header file OpenTransport.h and OpenTptInternet.h.
Carbon will not, however, support functions that rely on AppleTalk protocols.
For more information about Open Transport, you should visit the web site
<http://devworld.apple.com/dev/opentransport/>
which has extensive references to OT documentation and samples. Specifically, you should read Inside Macintosh: Networking with Open Transport, available in HTML and PDF format from the above site.
You may have to revise your code if it uses Open Transport in one of the following ways:
* Your application uses a function that directly gains access to a network port. Ports are read-only in Carbon. In Mac OS X, code that communicates directly with network interfaces must use the IOKit API.
* Your application uses the connection-oriented transaction-based endpoint feature of Open Transport. This feature will not be supported in Carbon. Removal of this capability should affect only users of AppleTalk protocols such as ASP. Note that the Mac OS does not currently have a native ASP implementation.
* Your application uses Open Transport's XTI interfaces or UNIX® stream interfaces. Carbon will not support these interfaces. Note however that you can obtain similar functionality using supported high-level functions.
An important change for Carbon applications using Open Transport is the addition of client context parameters to a number of OT functions. Each client of Open Transport now has its own client context so that OT can track resources it allocates on behalf of the client. An OT client means an application or a shared library. OT resources are objects like endpoints, timer tasks, and blocks of memory.
Carbon introduces a new type, OTClientContextPtr, that represents the OT client context. This new type is passed as an extra parameter to functions that allocate OT resources. Before Carbon, the determination of the OT client context was performed by the Open Transport static libraries that you linked to your application. Because the determination of the OT client context is now explicit, the same Carbon binary can run on MacOS 8 and MacOS X, and you do not have to link your application to the static libraries.
There are two new functions to explicitly create and destroy OT client contexts:
OTAllocClientContext
OTFreeClientContext
The interface to InitOpenTransport has changed so that it now takes a client context pointer and a flags parameter indicating whether OT is being initialized for an application or a shared library.
The following routines now take a client context:
CloseOpenTransport
OTAlloc
OTAllocMem
OTAsyncOpenAppleTalkServices
OTAsyncOpenEndpoint
OTAsyncOpenInternetServices
OTAsyncOpenMapper
OTCreateDeferredTask
OTCreateTimerTask
OTOpenAppleTalkServices
OTOpenEndpoint
OTOpenInternetServices
OTOpenMapper
As a convenience, applications may pass a null pointer to these routines and Open Transport will use the context that was passed to InitOpenTransport. However, shared libraries must always pass a valid OTClientContextPtr.
Carbon applications must pass UPPs instead of proc pointers for Open Transport callback routines. There are three new functions to create these UPPs:
OTNotifyUPP replaces OTNotifyProcPtr
OTProcessUPP replaces OTProcessProcPtr
OTListSearchUPP replaces OTListSearchProcPtr
There are corresponding routines to allocate and free those UPPs:
NewOTNotifyUPP
DisposeOTNotifyUPP
NewOTProcessUPP
DisposeOTProcessUPP
NewOTListSearchUPP
DisposeOTListSearchUPP
The following routines have been modified to take UPPs instead of proc pointers.
Routines taking an OTNotifyUPP:
OTAsyncOpenAppleTalkServices
OTAsyncOpenInternetServices
OTInstallNotifier
OTAsyncOpenEndpoint
OTAsyncOpenMapper
Routines taking an OTProcessUPP:
OTCreateTimerTask
OTCreateDeferredTask
Routines taking an OTListSearchUPP:
OTFindLink
OTFindAndRemoveLink
In Carbon, the CloseOpenTransport function takes an additional parameter, an OTClientContextPtr, which can be NULL for applications. Other types of clients must provide a valid client context pointer.In Carbon, the InitOpenTransport function takes two additional parameters: a client context pointer and a flags parameter.
The client context pointer must have been created previously by the OTAllocClientContext function.
The flags parameter indicates whether OT should be initialized for application use or for some other target (for example, plug-ins that run in an application context but not the application itself).Use InitOpenTransport instead.This function will not be supported because Apple has not identified a specific developer need for it.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.OT ports are read only in Carbon. In Mac OS X, code that communicates directly with network interfaces must use the IOKit API.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.Due to architectural changes Carbon will not support this function.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.Due to architectural changes, Carbon will not support this function.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.Due to architectural changes, Carbon will not support this function.This function will not be supported because Apple has not identified a specific developer need for it.OT ports are read only in Carbon. In Mac OS X, code that communicates directly with network interfaces must use the IOKit API.OT ports are read only in Carbon. In Mac OS X, code that communicates directly with network interfaces must use the IOKit API.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.Open Transport's connection-oriented transaction-based endpoint feature will not be supported.Due to architectural changes, Carbon will not support this function.Due to architectural changes, Carbon will not support this function.Apple has not identified a specific developer need for this function.Due to architectural changes we do not expect to be able to support this function.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.This function will not be supported because Apple has not identified a specific developer need for it.